package com.lin.carbon.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lin.carbon.entity.SysDictItem;
import com.lin.carbon.entity.SysDictItemVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

@Mapper
public interface SysDictItemMapper extends BaseMapper<SysDictItem> {

    /**
     * 分页查询字典项并关联字典名称
     */
    Page<SysDictItemVO> selectDictItemWithName(Page<SysDictItemVO> page);

    /**
     * 根据ID查询字典项并关联字典名称
     */
    SysDictItemVO selectDictItemWithNameById(Long id);

    /**
     * 根据字典编码查询字典项的字典编码和中文描述
     */
    default List<Map<String, Object>> selectNameListByDictCode(String dictCode) {
        return this.selectMaps(new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<SysDictItem>()
                .select(SysDictItem::getDictCode, SysDictItem::getItemCh)
                .eq(SysDictItem::getDictCode, dictCode));
    }

    /**
     * 通过 dictCode 获取系统字典配置的分页列表（子集字典 sys_dict_item）
     * @param page 分页对象
     * @param dictCode 字典编码
     * @return 分页后的字典项列表
     */
    Page<SysDictItemVO> selectDictItemPageListByDictCode(Page<SysDictItemVO> page, @Param("dictCode") String dictCode);

    int updateDictItem(SysDictItemVO sysDictItemVO);

    /**
     * 根据 ID 删除系统字典条目
     * @param id 字典条目 ID
     * @return 受影响的行数
     */
    int deleteDictItemById(@Param("id") Long id);

    /**
     * 获取 dict_code 为 012 且 item_ch 中包含“市”字的城市字典数据
     * @return 符合条件的城市字典列表
     */
    List<SysDictItemVO> getCityDict();

    List<SysDictItemVO> getFieldDict();
}